import Vue from 'vue'
import App from './App.vue'
import router from './router'
import Vant, { Toast } from 'vant'
import 'vant/lib/index.css'
import axios from 'axios'

Vue.use(Vant);
// axios配置
axios.defaults.baseURL = 'http://157.122.54.189:9083';
// axios.defaults.baseURL = 'http://127.0.0.1:3000'
// 当有token时，给所以请求加上请求头进行token验证
axios.interceptors.request.use((config) => {
  if (window.localStorage.token) {
    config.headers.Authorization = "Bearer " + window.localStorage.token
  }
  return config
})
axios.interceptors.response.use((res) => {
  // console.log(res)
  const data = res.data
  // 拦截返回以4开头的状态码
  const reg = /^4\d{2}$/
  if (reg.test(data.statusCode)) {
    Toast.fail(data.message)
  }
  // 主要用来拦截用户携带错误的token的情况，因为导航守卫那边只是判断用户是否有token，但不能判断用户的token是否是正确的token
  if (data.message === "用户信息验证失败") {
    window.localStorage.clear();
    router.replace("/login");
  } else {
    return res
  }
})
Vue.prototype.$axios = axios

// 导航守卫配置
router.beforeEach((to, from, next) => {
  if (to.meta.needAuth) {
    if (window.localStorage.getItem('token')) {
      next() // 放行函数
    } else {
      router.push('/login')
    }
  } else {
    next()
  }
})

Vue.config.productionTip = false

new Vue({
  router,
  render: function (h) { return h(App) }
}).$mount('#app')
